
/**
 * @ProjectName: 
 * @Copyright: 2014 lisheng Co., Ltd. All Right Reserved.
 * @address: toughheart@163.com
 * @date: 2014年12月29日 下午6:41:59
 * @Description: 本内容未经本人允许禁止使用、转发.
 */
 
package com.ls.fw.data.dao;

import java.io.Closeable;

import com.ls.fw.data.config.DataConfig;



/**
 * 控制dao接口：数据服务的常见的控制接口
 * @author lisheng
 * @date 2014年12月29日 下午6:41:59
 * @version V1.0 
 */
public interface ControlDataDao extends Closeable {

	/**
	 * 更改服务
	 * 
	 * @author lisheng
	 * @date 2014年12月29日 下午6:42:48
	 * @version V1.0
	 * @param address 数据服务地址信息
	 * @return 底层服务实体
	 */
	public <S> S switchServer(Object address);
	
	

	/**
	 * 获取当前底层服务实体
	 * @author lisheng
	 * 2014年12月4日下午2:39:28 
	 * @return 底层服务实体
	 */
	public <S> S getServer();
	
	
	/**
	 * 打开服务
	 * @author lisheng
	 * 2014年11月21日下午3:24:08 
	 * @param address 数据服务地址信息
	 * @return 是否打开成功
	 */
	public boolean open(Object address);
	
	
	/**
	 * 打开服务
	 * @author lisheng
	 * 2014年11月21日下午3:24:11 
	 * @return 是否打开成功
	 */
	public boolean open();
	
	
	/**
	 * 重新打开服务
	 * @author lisheng
	 * 2014年11月21日下午3:24:21 
	 * @return 是否打开成功
	 */
	public boolean reopen();
	
	
	/**
	 * 提交(默认为硬提交)
	 * @author lisheng
	 * 2014年11月21日下午3:24:23 
	 * @return 是否提交成功
	 */
	public boolean commit();
	
	
	/**
	 * 提交
	 * @author lisheng
	 * 2014年11月28日下午1:21:21 
	 * @param softCommit 是否为软提交
	 * @return 是否提交成功
	 */
	public boolean commit(boolean softCommit);
	
	
	/**
	 * 回滚
	 * @author lisheng
	 * 2014年11月21日下午3:24:28 
	 * @return 是否回滚成功
	 */
	public boolean rollback();
	
	
	/**
	 * 优化数据(耗时操作，请谨慎使用！)
	 * @author lisheng
	 * 2014年12月3日下午4:53:57
	 */
	public void optimize();
	
	
	/**
	 * 服务是否关闭
	 * @author lisheng
	 * 2014年11月21日下午3:24:00 
	 * @return 是否关闭
	 */
	public boolean isClosed();
	
	
	/**
	 * 是否自动提交
	 * @author lisheng
	 * 2014年11月25日下午5:27:16 
	 * @return 是否自动提交
	 */
	public boolean isAutoCommit();
	
	
	/**
	 * 关闭服务
	 * @author lisheng
	 * @date 2014年12月29日 下午7:20:56
	 * @version V1.0
	 */
	public void close();
	
	/**
	 * 获取服务地址信息
	 * @author lisheng
	 * 2014年11月21日下午3:24:05 
	 * @return 服务地址信息
	 */
	public Object getAddress();


	/**
	 * 获取配置文件路径
	 * 
	 * @author lisheng
	 * @date 2014年12月29日 下午7:29:34
	 * @version V1.0
	 * @return
	 */
//	public String getConfigPath();

	
	/**
	 * 配置信息
	 * @author lisheng
	 * @date 2014年12月18日 下午10:37:39
	 * @version V1.0
	 * @return 配置文件实体
	 */
	public DataConfig getDataConfig();
	

	public String getPrikeyName();
}
